漏洞扫描 VS. 渗透测试
在安全防护中,对风险的检测是很重要的一环。然而,很多人会将其中的“漏洞扫描”与“渗透性测试”两个概念混淆。而事实上,两者截然不同,无法取代对方在整个安全防护与风险分析中的重要性与价值,并且是在诸如PCI、HIPPA、ISO 27001等标准中的硬性要求。
简单而言,渗透测试是需要利用系统架构中的漏洞达成某种测试性的攻击目的;漏洞扫描或者漏洞评估则是通过已知的漏洞信息对系统进行检测,并基于风险的暴露情况生成报告。
渗透测试和漏洞扫描都主要基于三个因素进行:范围、资产的风险性与关键性、成本和时间。
对渗透测试而言,测试范围是明确的特定目标,并且往往会有人为因素影响其中。暂时而言,所谓自动化的渗透测试是几乎不存在的。一个经验丰富的渗透测试人员往往会在测试过程中修改自己的脚本、参数,甚至对自己所用的攻击工具进行调整,从而达成攻击目的——从这个层面来看,自动化的渗透测试显然并不可行。
渗透测试的目标可以是一个特定的应用,或者是网络层面的某个功能;目标也可以是某个部门的IT系统或者一部分资产。尽管理论上可以将一个组织的整个IT架构和应用都作为目标,但在现实中由于成本和时间因素的影响并不可行。渗透测试的目标往往基于资产的风险性以及重要性决定。一次渗透测试一般会持续几天到数周,因此在低风险的资产上进行数日的攻击显然并不合理。鉴于上文提到的,优秀的渗透测试人员有着极高的技术能力,因此他们的费用也相当昂贵。
从结果上来看,渗透测试往往能发现一些未知的漏洞,或者在正常业务流程当中不会被察觉到的隐患。不过,渗透测试也因此会有一定概率造成业务的中断。一般而言,渗透测试一年只进行一次,并且渗透测试报告往往简短且一针见血。
而另一方面,漏洞扫描的目的是在网络设备和应用当中识别潜在的漏洞。漏洞扫描可以基于网络层面或者应用层面自动化进行,但是漏洞扫描只是进行漏洞的识别,而不会去尝试利用漏洞实行进一步的行动。因此,漏洞扫描往往并非为了利用和发现0day漏洞而设计。漏洞扫描的范围往往会扩展到整个企业的业务领域,因而需要自动化工具管理大量的资产,其范围自然要比渗透测试大很多。即使漏洞扫描拥有自动化的能力,对相关漏洞扫描产品的了解与技术能力依然必不可少——一般由网络知识丰富的管理员或者安全人员进行操作。
漏洞扫描可以在任意数量的资产上频繁使用,确保所有已知漏洞已经被检测并且修复,从而快速减少资源中的高危漏洞;组织和机构可以参照漏洞管理生命周期进行更有效的漏洞管理。漏洞扫描的成本相比渗透测试而言要低廉很多。相比渗透测试更倾向于对漏洞利用的防止,漏洞扫描更注重于对漏洞的检测和控制。
漏洞管理可以合并入补丁管理中。补丁需要在测试系统上通过测试才能应用到正式系统中。
在多个安全控制和标准中强调了漏洞扫描的重要性。比如在互联网安全中心(Center of Internet Security, CIS)20项安全控制中第三项“持续性漏洞管理”中建议安全人员“持续地获取、评估并对新的信息采取措施从而识别漏洞,最终修复或者减小攻击者的攻击窗口”。另外,在PCI DSS中要求11.2也明确指出“至少每个季度运行一次内部和外部网络漏洞扫描,并且在网络有任何重大变化(例如安装新的系统软件,更改网络拓扑,修改防火墙,产品升级)时也运行漏洞扫描”。
结论:
组织和机构需要将漏洞扫描和渗透测试都需要融入网络风险分析流程中,从而为业务、部门制定最佳管控,减小网络安全风险。但是,需要明确的是,尽管漏洞扫描和渗透测试都想当重要,但两者的目的和产出价值是不同的。
对安全工具的训练同样重要,毕竟仅仅给员工提供安全工具并不能保障IT环境的安全性。事实上,无法有效使用安全工具反而会给组织和机构带来更大的安全风险。熟练使用安全工具可以使得安全团队获得高质量的组织安全态势、降低在不必要的故障上的时间和经济成本,从而提升投资回报率。